package extreme.fizzbuzz;

/**
 * 1.返回字符串 'Fizz'
 *     - GIVEN 报数
 *     - WHEN 该数字包含了7
 *     - THEN 返回字符串 'Fizz'
 *  2.返回字符串 'BuzzWhizz'
 *     - GIVEN 报数
 *     - WHEN 该数字包含了5
 *     - THEN 返回字符串 'BuzzWhizz'
 * 3.返回字符串 'Fizz'
 *     - GIVEN 报数
 *     - WHEN 该数字包含了3
 *     - THEN 返回字符串 'Fizz'
 * 4.返回字符串 'FizzBuzzWhizz'
 *     - GIVEN 报数
 *     - WHEN 该数字同时是3、5、7的倍数
 *     - THEN 返回字符串 'FizzBuzzWhizz'
 * 5.返回字符串 'FizzBuzz'
 *     - GIVEN 报数
 *     - WHEN 该数字是3和5的倍数
 *     - THEN 返回字符串 'FizzBuzz'
 * 6.返回字符串 'FizzBuzz'
 *     - GIVEN 报数
 *     - WHEN 该数字是3和7的倍数
 *     - THEN 返回字符串 'FizzBuzz'
 * 7.返回字符串 'FizzBuzz'
 *  - GIVEN 报数
 *  - WHEN 该数字是5和7的倍数
 *  - THEN 返回字符串 'FizzBuzz'
 * 8.返回字符串 'Fizz'
 *     - GIVEN 报数
 *     - WHEN 该数字是3的倍数
 *     - THEN 返回字符串 'Fizz'
 * 9.返回字符串 'Buzz'
 *     - GIVEN 报数
 *     - WHEN 该数字是5的倍数
 *     - THEN 返回字符串 'Buzz'
 * 10.返回字符串 'Whizz'
 *     - GIVEN 报数
 *     - WHEN 该数字是7的倍数
 *     - THEN 返回字符串 'Whizz'
 * 11.返回报数的数字
 *     - GIVEN 报数
 *     - WHEN 该数字既不包含3，7，5，也不是3，7，5的倍数
 *     - THEN 返回报的数字
 */
public class FizzbuzzAdvanced {
    private final Integer num;

    public FizzbuzzAdvanced(Integer num) {
        this.num = num;
    }

    public Integer getNum() {
        return num;
    }

    public String checkNum() {
        String strNum = String.valueOf(num);
        if (strNum.contains("7")){
            return "Fizz";
        }
        if (strNum.contains("5")){
            return "BuzzWhizz";
        }
        if (strNum.contains("3")){
            return "Fizz";
        }
        if (num%105==0){
            return "FizzBuzzWhizz";
        }
        if (num%21==0 || num%15==0 || num%35==0){
            return "FizzBuzz";
        }
        if (num%3==0){
            return "Fizz";
        }
        if (num%5==0){
            return "Buzz";
        }
        if (num%7==0){
            return "Whizz";
        }
        return String.valueOf(num);
    }

}
